package com.active.activedemo.model;

import com.active.activedemo.model.TaskListenerBean;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class UserTaskProperty {

    /**
     * 异步操作标识符，默认false
     */
    @JsonProperty("asynchronousdefinition")
    private boolean asynchronousDefinition;
    /**
     * 排他属性，默认false
     */
    @JsonProperty("exclusivedefinition")
    private boolean exclusiveDefinition;
    /**
     * 多例模式（会签）
     */
    @JsonProperty("multiinstance_type")
    private String multiInstanceType = "";
    /**
     * 会签状态下，需要分配的人员集合
     */
    @JsonProperty("multiinstance_collection")
    private String multiInstanceCollection = "";
    /**
     * 会签状态下，变量
     */
    @JsonProperty("multiinstance_variable")
    private String multiInstanceVariable = "";
    /**
     * 用户任务分配的人员
     */
    @JsonProperty("usertaskassignment")
    private Map<String, Map<String, String>> usertaskAssignment = new HashMap<>();
    /**
     * 人工任务的监听器，主要是为了自动节点和子流程节点使用
     */
    @JsonProperty("tasklisteners")
    private Map<String, List<TaskListenerBean>> tasklisteners = new HashMap<>();

    public void setTasklisteners(String delegateExpression) {
        List<TaskListenerBean> taskListenerBeans = new ArrayList<>();
        TaskListenerBean taskListenerBean =new TaskListenerBean();
        taskListenerBean.setEvent("create");
        taskListenerBean.setDelegateExpression(delegateExpression);
        taskListenerBean.setImplementation(delegateExpression);
        taskListenerBeans.add(taskListenerBean);
        Map<String, List<TaskListenerBean>> listen = new HashMap<>();
        listen.put("taskListeners", taskListenerBeans);
        this.tasklisteners = listen;
    }
}